package models

import (
	"log"
	"time"
)

// 角色表
type Roles struct {
	RoleId     int64     `json:"role_id" db:"role_id"`         // 角色Id
	Name       string    `json:"name" db:"name"`               // 角色名称
	Code       string    `json:"code" db:"code"`               // 角色代码
	RoleStatus int       `json:"role_status" db:"role_status"` // 角色状态 角色状态(0正常 1禁用）
	Remark     string    `json:"remark" db:"remark"`           // 备注
	CreateTime time.Time `json:"create_time" db:"create_time"` // 创建时间
	CreateId   int64     `json:"create_id" db:"create_id"`     //
	UpdateId   int64     `json:"update_id" db:"update_id"`     //
	UpdateTime time.Time `json:"update_time" db:"update_time"` //

}

func GetRolesList4Pager(form SearchForm) *PageResult {
	sqlWhere := " 1=1 " // todo sql条件 可以自定义

	params := make([]interface{}, 0)

	// todo sql条件 可以自定义
	// i := 1
	// key := form.GetStr("key")
	// if len(key) > 0 {
	// 	params = append(params, "%"+key+"%")
	// 	sqlWhere += " and (key like $" + utils.IntToStr(i) + " or value like $" + utils.IntToStr(i) +
	// 		" or remark like $" + utils.IntToStr(i) + " or name like $" + utils.IntToStr(i) + ")"
	// 	i++
	// }
	return PageHavePre("", "", "*", "sys_roles", sqlWhere, "role_id", form.Page, params...)
}

// 删除
func DeleteRoles(id int64) int64 {
	sqlSave := "delete from sys_roles  where role_id=:role_id"
	db, _ := OpenDB()
	defer db.Close()
	param := map[string]interface{}{"role_id": id}
	result, err := db.NamedExec(sqlSave, param)
	if err != nil {
		log.Fatalln(err)
		return 0
	} else {
		i, _ := result.RowsAffected()
		return i
	}
}

// 添加
func AddRolesData(data *Roles) int64 {

	sqlSave := `
		INSERT INTO sys_roles(  name   ,code   ,role_status   ,remark   ,create_time   ,create_id   ,update_id   ,update_time  )
		
		VALUES (  :name   ,:code   ,:role_status   ,:remark   ,CURRENT_TIMESTAMP   ,:create_id   ,:update_id   ,CURRENT_TIMESTAMP  )`
	db, _ := OpenDB()
	defer db.Close()
	result, err := db.NamedExec(sqlSave, data)
	if err != nil {
		log.Fatalln(err)
		return 0
	} else {
		i, _ := result.RowsAffected()
		return i
	}
}

// 更新
func UpdateRoles(data *Roles) int64 {
	sqlSave := `update sys_roles set name=:name  , code=:code  , role_status=:role_status  , remark=:remark  , update_id=:update_id  , update_time=CURRENT_TIMESTAMP 
	where role_id=:role_id`
	db, _ := OpenDB()
	defer db.Close()
	result, err := db.NamedExec(sqlSave, data)
	if err != nil {
		log.Fatalln(err)
		return 0
	} else {
		i, _ := result.RowsAffected()
		return i
	}
}

// 获取角色列表下拉框用
func GetRoles4Dll() *[]interface{} {
	sqlSelect := "select role_id,name from  sys_roles where role_status =0 order by role_id "
	dataList := make([]interface{}, 0) // 返回值
	db, err := OpenDB()
	defer db.Close()
	if err != nil {
		log.Fatalln(err)
		return &dataList
	}
	rows, err1 := db.Queryx(sqlSelect)
	if err1 != nil {
		log.Fatalln(err1)
		return &dataList
	}

	for rows.Next() {
		data := make(map[string]interface{})
		rows.MapScan(data)
		dataList = append(dataList, data)
	}
	return &dataList
}
